home *** CD-ROM | disk | FTP | other *** search
- //: C19:DelayedInstantiation.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Member functions of class templates are not
- // instantiated until they're needed.
-
- class X {
- public:
- void f() {}
- };
-
- class Y {
- public:
- void g() {}
- };
-
- template <typename T> class Z {
- T t;
- public:
- void a() { t.f(); }
- void b() { t.g(); }
- };
-
- int main() {
- Z<X> zx;
- zx.a(); // Doesn't create Z<X>::b()
- Z<Y> zy;
- zy.b(); // Doesn't create Z<Y>::a()
- } ///:~
-